home
***
CD-ROM
|
disk
|
FTP
|
other
***
search
/
FM Towns: Free Software Collection 7
/
FM Towns Free Software Collection 7.iso
/
taropyon
/
hewin
/
ccisrc
/
ish.cci
< prev
next >
Wrap
Text File
|
1993-11-30
|
8KB
|
281 lines
/*************************************************************************
* "ish.cci" : ish file converter サポート用
*************************************************************************/
#define _ISH_MD_S 0
#define _ISH_MD_7 1
#define _ISH_MD_8 2
#define _ISH_MD_N 3
#define _ISH_OS_MSDOS 0
#define _ISH_OS_UNIX 1
#define _ISH_OS_MAC 2
#define _ISH_OS_CPM 3
#define _ISH_OS_OS9 4
#define _ISH_OS_OTHER 5
#define _ISH_OS_ALL 6
int _ish_md = _ISH_MD_S;
int _ish_os = _ISH_OS_MSDOS;
int _ish_mv = 0;
int _ish_setMd()
{
int ret;
char *obj;
char *mnu;
obj = MNU_alloc(4);
MNU_setObj(obj, 0, MNU_NOR, 'S', " shift jis " , NULL, _ISH_MD_S, NULL, NULL );
MNU_setObj(obj, 1, MNU_NOR, '7', " jis 7" , NULL, _ISH_MD_7, NULL, NULL );
MNU_setObj(obj, 2, MNU_NOR, '8', " jis 8" , NULL, _ISH_MD_8, NULL, NULL );
MNU_setObj(obj, 3, MNU_NOR, 'N', " non-kana" , NULL, _ISH_MD_N, NULL, NULL );
mnu = MNU_open( DLGPOS_MOS_SET_HOME, DLGPOS_MOS_SET_HOME,
MNUATT_EXIT, obj, "ISH 作成モード" );
ret = MNU_start ( mnu );
MNU_close(mnu);
MNU_free(obj);
if ( ret >= 0 )
_ish_md = ret;
return (0);
}
int _ish_setOs()
{
int ret;
char *obj;
char *mnu;
obj = MNU_alloc(7);
MNU_setObj(obj, 0, MNU_NOR, 'D', " MS-DOS " , NULL, _ISH_OS_MSDOS, NULL, NULL );
MNU_setObj(obj, 1, MNU_NOR, 'U', " UNIX" , NULL, _ISH_OS_UNIX , NULL, NULL );
MNU_setObj(obj, 2, MNU_NOR, 'M', " Mac" , NULL, _ISH_OS_MAC , NULL, NULL );
MNU_setObj(obj, 3, MNU_NOR, 'C', " CP/M" , NULL, _ISH_OS_CPM , NULL, NULL );
MNU_setObj(obj, 4, MNU_NOR, '9', " OS-9" , NULL, _ISH_OS_OS9 , NULL, NULL );
MNU_setObj(obj, 5, MNU_NOR, 'O', " other" , NULL, _ISH_OS_OTHER, NULL, NULL );
MNU_setObj(obj, 6, MNU_NOR, 'A', " all" , NULL, _ISH_OS_ALL , NULL, NULL );
mnu = MNU_open( DLGPOS_MOS_SET_HOME, DLGPOS_MOS_SET_HOME,
MNUATT_EXIT, obj, "ISH OS 種別" );
ret = MNU_start ( mnu );
MNU_close(mnu);
MNU_free(obj);
if ( ret >= 0 )
_ish_os = ret;
return (0);
}
int _ish_setMv()
{
int ret;
char *dlg;
char tmp[16], mv[16];
if ( _ish_mv == 0 )
strcpy( mv, "off");
else
sprintf( mv,"%d", mv );
dlg = DLG_getsOpen( DLGPOS_MOS_SET_HOME, DLGPOS_MOS_SET_HOME, 320,
" 1ファイルの行数を入力してください(100~9999)。 \n現在:%s",
mv );
DLG_getsSetTitle( dlg, "ISH マルチボリューム設定" );
tmp[0] = 0;
ret = DLG_getsStart( dlg, 15, tmp );
DLG_getsClose(dlg);
if ( ret >= 0 )
{ ret = atoi(tmp); /* BugFix ver.1.01c#07 1993/08/21 */
if ( ret > 99 && ret < 10000 )
_ish_mv = ret;
}
return (0);
}
int _ish_make( char *dcn )
{
int ret;
char *fdl;
char ish[128], dir[128], cmd[256];
char tmp[128];
char *md, *os, mv[16];
/* オプション作成 */
switch ( _ish_md )
{
case _ISH_MD_S: md = "/ss"; break;
case _ISH_MD_7: md = "/s7"; break;
case _ISH_MD_8: md = "/s8"; break;
case _ISH_MD_N: md = "/sn"; break;
}
switch ( _ish_os )
{
case _ISH_OS_MSDOS: os = "/m" ; break;
case _ISH_OS_UNIX: os = "/u" ; break;
case _ISH_OS_MAC: os = "/ma"; break;
case _ISH_OS_CPM: os = "/c" ; break;
case _ISH_OS_OS9: os = "/9" ; break;
case _ISH_OS_OTHER: os = "/?" ; break;
case _ISH_OS_ALL: os = "/*" ; break;
}
if ( _ish_mv == 0 )
mv[0] = '\0';
else
sprintf( mv,"/mv %d", _ish_mv );
if ( (fdl = FDL_open(0)) == NULL )
return (ERR);
FDL_set_title( fdl, "ISH ファイル作成");
FDL_set_wildcard( fdl, "*.*");
SYL_puts(C_HGREEN,"ISH ファイルにしたいファイルを選択してください。");
if ( FDL_start(fdl) == NORMAL && FS_setFullPathname( tmp, FDL_get_filename(fdl)) == NORMAL )
{
FS_unix2dos( ish, tmp );
ret = NORMAL;
} else
ret = ERR;
if ( ret == NORMAL )
{
DLG_tmpMsgTime( DLGPOS_MOS_SET_CENTER, DLGPOS_MOS_SET_CENTER,
C_MBLACK, C_DLGBASE, COLMIX(C_INFO,C_GRAY),
3, " %s : \n ISH ファイルを作成するディレクトリに移動してください。 ",
ish );
FDL_set_defaultFilename( fdl, "");
FDL_set_title( fdl, "ISH : ディレクトリ指定");
SYL_puts( C_HGREEN,
"ISH ファイルを作成したいディレクトリに移動してください。");
ret = FDL_start(fdl);
if ( ret == NORMAL )
{
sprintf( tmp, "%c:/%s", FDL_get_drv(fdl) + 'A', FDL_get_whare(fdl) );
FS_unix2dos( dir, tmp );
FDL_close(fdl);
sprintf( cmd, "ish %s %s %s %s %s", ish, md, os, dir, mv );
DCN_puts( dcn, cmd );
DCN_exec( dcn, 0, cmd );
ret = DCNCMD_PROMPT;
} else
FDL_close(fdl);
} else
FDL_close(fdl);
SYL_clear();
return (ret);
}
int _ish_restore( char *dcn )
{
int ret;
char *fdl;
char ish[128], cmd[256], tmp[128];
if ( (fdl = FDL_open(0)) == NULL )
return (ERR);
FDL_set_title( fdl, "ISH ファイルの復元");
FDL_set_wildcard( fdl, "*.*");
SYL_puts(C_HGREEN,"復元したいファイルを指定してください。");
if ( FDL_start(fdl) == NORMAL && FS_setFullPathname( ish, FDL_get_filename(fdl)) == NORMAL )
ret = NORMAL;
else
ret = ERR;
if ( ret == NORMAL )
{
DLG_tmpMsgTime( DLGPOS_MOS_SET_CENTER, DLGPOS_MOS_SET_CENTER,
C_MBLACK, C_DLGBASE, COLMIX(C_INFO,C_GRAY),
3, " %s : \n復元先するディレクトリに移動してください。 ",
ish );
FDL_set_defaultFilename( fdl, "");
FDL_set_title( fdl, "ISH : 復元先ディレクトリの指定");
SYL_puts(C_HGREEN,
"ISH ファイルを復元したいディレクトリに移動してください。");
ret = FDL_start(fdl);
FDL_close(fdl);
if ( ret == NORMAL )
{
FS_unix2dos( tmp, ish );
sprintf( cmd, "ish %s /r", tmp );
DCN_puts( dcn, cmd );
DCN_exec( dcn, 0, cmd );
ret = DCNCMD_PROMPT;
}
} else
FDL_close(fdl);
SYL_clear();
return (ret);
}
int _ish_setobj( char *obj )
{
char *md, *os, mv[16];
switch ( _ish_md )
{
case _ISH_MD_S: md = "shift jis"; break;
case _ISH_MD_7: md = "jis7" ; break;
case _ISH_MD_8: md = "jis8" ; break;
case _ISH_MD_N: md = "non-kana" ; break;
}
switch ( _ish_os )
{
case _ISH_OS_MSDOS: os = "MS-DOS"; break;
case _ISH_OS_UNIX: os = "UNIX" ; break;
case _ISH_OS_MAC: os = "Mac" ; break;
case _ISH_OS_CPM: os = "CP/M" ; break;
case _ISH_OS_OS9: os = "OS-9" ; break;
case _ISH_OS_OTHER: os = "other" ; break;
case _ISH_OS_ALL: os = "all" ; break;
}
if ( _ish_mv == 0 )
strcpy( mv, "off");
else
sprintf( mv, "%d", _ish_mv );
MNU_setObj(obj, 0, MNU_NOR, 'I', " ISH ファイルの作成 " , NULL, 1, NULL , NULL );
MNU_setObj(obj, 1, MNU_STR, 'S', " 作成モード %s " , md , 0, "_ish_setMd", NULL );
MNU_setObj(obj, 2, MNU_STR, 'O', " OS種別 %s " , os , 0, "_ish_setOs", NULL );
MNU_setObj(obj, 3, MNU_STR, 'M', " マルチボリューム %s " , mv , 0, "_ish_setMv", NULL );
MNU_setObj(obj, 4, MNU_BLK, 0 , NULL , NULL, 0, NULL , NULL );
MNU_setObj(obj, 5, MNU_NOR, 'R', " ISH ファイルの復元 " , NULL, 2, NULL , NULL );
return (0);
}
int dcn_ish_menu( char *dcn )
{
int ret;
char *obj;
char *mnu;
obj = MNU_alloc(6);
_ish_setobj(obj);
mnu = MNU_open( DLGPOS_MOS_SET_HOME, DLGPOS_MOS_SET_HOME,
MNUATT_EXIT, obj, "ISH MENU" );
while ( 1 )
{
ret = MNU_start ( mnu );
if ( ret != 0 )
break;
_ish_setobj(obj);
}
MNU_close(mnu);
MNU_free(obj);
switch ( ret )
{
case 1: return _ish_make(dcn); /* 作成 */
case 2: return _ish_restore(dcn); /* 復元 */
}
return (ERR);
}
#undef _ISH_MD_S
#undef _ISH_MD_7
#undef _ISH_MD_8
#undef _ISH_MD_N
#undef _ISH_OS_MSDOS
#undef _ISH_OS_UNIX
#undef _ISH_OS_MAC
#undef _ISH_OS_CPM
#undef _ISH_OS_OS9
#undef _ISH_OS_OTHER
#undef _ISH_OS_ALL